<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /* 
    1.   有一个数组 list=["a","b","c","d","e","f","g"] 随机取四个元素,放到新数组中,再拼接形成字符串 (可以重复) "abcd"
    1.1  要求随机的四个元素 不重复  
        提示: 数组如何取值?
            数组取值和赋值都依赖于下标, 随机元素 => 随机下标(0  list.length-1)
         放到新数组之前需要判断数组中是否存在?
    
    */

    // 有重复项
    // var list=["a","b","c","d","e","f","g"];
    // var arr = [];
    // for(var i = 0;i< 4;i++){
    //     var index = Math.floor(Math.random() * list.length);
    //     var char = list[index];
    //     console.log(char);
    //     arr.push(char);
    // }
    // console.log(arr);

    // 要求: 没有重复项
    // 分析: 
    // (1) 为啥会重复  => 每次随机完毕直接放新数组, 没有考虑过新数组中是否存在 => 放之前要判断新数组中是否存在
    // (2) 重复之后怎么办?
    //     a. 重复之后再来一次(计数法)
    //     b. 重复之后本次不算(本次重来)
    //     c. 死循环计数法
    //     d. 每次随机完毕将随机的元素从原数组中删除
    
    /* var list = ["a", "b", "c", "d", "e", "f", "g"];
    var arr = [];
    var count = 4;
    for (var i = 0; i < count; i++) {
        var index = Math.floor(Math.random() * list.length);
        var char = list[index];
        
        if(arr.includes(char) == false){
            arr.push(char);
        }else{
            console.log(char + "重复了");
            count ++; // 5 6
        }
    }
    console.log(arr); */

    /* var list = ["a", "b", "c", "d", "e", "f", "g"];
    var arr = [];
    for (var i = 0; i < 4; i++) { // 假设 i = 1时重复
        var index = Math.floor(Math.random() * list.length);
        var char = list[index];
        
        if(arr.includes(char) == false){
            arr.push(char);
        }else{
            console.log(char + "重复了");
            i--; // i-- => i=0; 本次循环结束 i++  => i = 1
        }
    }
    console.log(arr); */


    /* var list = ["a", "b", "c", "d", "e", "f", "g"];
    var arr = [];

    while(true){
        var index = Math.floor(Math.random() * list.length);
        var char = list[index];
        
        if(arr.includes(char) == false){
            arr.push(char);
            if(arr.length == 4) break;
        }else{
            console.log(char + "重复了");
        }
    }
    console.log(arr); */

    /* 
    var list = ["a", "b", "c", "d", "e", "f", "g"];
    var newList = list.slice();  // 为了不影响list => 将list进行深复制
    var arr = [];
    for (var i = 0; i < 4; i++) { // 假设 i = 1时重复
        var index = Math.floor(Math.random() * newList.length);
        var char = newList[index];
        newList.splice(index,1);
        arr.push(char);
    }
    console.log(arr); 
    console.log(list);  
    */

   






</script>

</html>